Skip to content

fix(io): report what a compio file round sent before it failed - #161

Merged
lexoliu merged 1 commit into
mainfrom
fix/159-file-region-bytes
Nov 11, 2026
Merged

lexoliu merged 1 commit into
mainfrom
fix/159-file-region-bytes

Conversation

@lexoliu

@lexoliu lexoliu commented Nov 11, 2026

Copy link
Copy Markdown
Collaborator

A file round on compio that failed after draining part of its pipe into the socket returned the error, so send_file_all could resend bytes already sent after an Interrupted. It now returns what it drained and drops the pipe; the next call reports the error. The new Linux test fills a minimum-size socket buffer, resets the peer mid-round and checks the round reports partial progress and the next call fails; it fails without the fix.

Closes #160

On Linux, a compio `send_file` round splices up to a pipe's capacity from
the file into a pipe, then drains the pipe into the socket. An error while
draining was returned as the round's result even when part of the pipe had
already reached the socket, so the caller was told nothing went out.
`send_file_all` retries `Interrupted` at the same offset, which would send
those bytes a second time.

A round that fails after draining part of its pipe now reports the drained
bytes, as a write does, drops the pipe with whatever it still holds, and
leaves the error to the next call.

Refs #159
@codecov-commenter

Copy link
Copy Markdown

⚠️ Please install the 'codecov app svg image' to ensure uploads and comments are reliably processed by Codecov.

Codecov Report

❌ Patch coverage is 81.81818% with 2 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
io/src/compio.rs 81.81% 2 Missing ⚠️

📢 Thoughts on this report? Let us know!

@lexoliu
lexoliu merged commit 811bb0f into main Nov 11, 2026
11 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

io: a compio file round that fails mid-drain reports no progress

2 participants